function [ Y_hat, Y_out ] = test_aplsc( model, X, n_dim )

n_dim = min(size(model.W, 2), n_dim);

E = X;
T = zeros(size(X, 1), n_dim);
for i_dim = 1:n_dim
    t_i = E*model.W(:, i_dim);
    E = E - t_i*model.P(:, i_dim)';
    T(:, i_dim) = t_i;
end
% T = X*R;
Y_out = T*model.V(1:n_dim, 1:n_dim)*model.Q(:, 1:n_dim)' - model.b;
Y_hat = sign(Y_out + eps);

end
